// Mechanicoder
// 2022/11/06

#pragma once

#include <QMainWindow>

#include <AIS_InteractiveContext.hxx>

#include <vector>

class AIS_InteractiveObject;
class View;

namespace Ui
{
    class CtrlWidgetUi;
}

class ViewWindow : public QMainWindow
{
    Q_OBJECT
public:
    ViewWindow(QWidget* parent = nullptr);
    ~ViewWindow();

private slots:
    void OnImport();
    void OnHideShape();
    void OnSubview();

private:
    void InitCtrlWidget();

    Handle(AIS_InteractiveObject) TestPointCloudOnShape(const TopoDS_Shape& shape,
        double dist, bool is_density, double density, Aspect_TypeOfMarker marker) const;

private:
    Handle(AIS_InteractiveContext) _context;
    Handle(AIS_InteractiveContext) _rightContext;

    View* _view;
    View* _rightView;
    Ui::CtrlWidgetUi* _ctrlUi;

    std::vector<Handle(AIS_InteractiveObject)> _generated;
};
